2010/07/29

Recent entries from same category

  1. Go 言語プログラミングエッセンスという本を書きました。
  2. errors.Join が入った。
  3. unsafe.StringData、unsafe.String、unsafe.SliceData が入った。
  4. Re: Go言語で画像ファイルか確認してみる
  5. net/url に JoinPath が入った。

Goは型宣言無しに値が代入出来てしまうので、カーソル上の変数から型推測する必要がある補完は難しいんじゃないかなーと思ってたら、なんと作った人がいました。
すげー。

nsf's gocode at master - GitHub

Autocompletion/refactoring daemon for Go language.Work in progress..Currently available things: - .a...

http://github.com/nsf/gocode
仕組みはvimスクリプト内でデーモン起こしてコードとキーワードと共にサーバ側でコンパイルし、解析して返すというもの。通信にはRPCが使われている。
補完はomniなので<c-x><c-o>で開始。ちゃんと
  • インスタンスメソッド一覧
  • 構造体のメンバ
  • パッケージ内の定数や型、関数
gocode1

もろもろ補完してくれる。私が無理かもねと思ってた以下の様なコードでもしっかり補完してくれている。すばらしい。

gocode2

Go書く人はいれるべし。ちなみにこのgocode、出力形式としてemacsもサポートしている(未確認)ので、ぜひ試して欲しい。

追記
さすがにこういうコードは難しいみたい。なんかPANICって補完されてます。

package main

type Foo struct {
    Boo func();
    Baz string;
}

func foo() *Foo {
    return &Foo {}
}

func main() {
    foo().PANIC
}

Posted at by